package com.xhui.vimarket.common.utils.collection;

import java.util.List;

public interface VimarketList<E> extends VimarketCollection<E> {
    
    /**
     * 获得所有列表信息，包含保留列表和新增列表。
     * 
     * @return 返回有效列表
     */
    List<E> getAll();
    
    /**
     * 获得初始集合的列表信息。
     * 
     * @return 返回保留列表 
     */
    List<E> getRetains();
    
    /**
     * 获得新增的列表信息。
     * 
     * @return 返回新增列表
     */
    List<E> getAdds();
    
    /**
     * 获得删除的列表信息。
     * 
     * @return 返回删除列表
     */
    List<E> getRemoves();
    
    /**
     * 获得初始集合中更新的列表信息。
     * 
     * @return 返回更新列表
     */
    List<E> getUpdates();
    
    /**
     * 获得初始集合中无更新的列表信息。
     * 
     * @return 返回无更新列表
     */
    List<E> getInitials();
    
    /**
     * {@inheritDoc}
     * @see com.xhui.crm.common.util.collection.CrmCollection#getCollectionByProperty(
     *      java.lang.String, java.lang.Object)
     */
    List<E> getCollectionByProperty(String propertyName, Object propertyValue);
    
    /**
     * 直接删除元素。
     * 
     * @param index 元素位置
     */
    E removeDirectly(int index);
}
